package day1018_1;
//引入    文件夹.文件
import java.util.*;

public class EmpDaoImpl {
    Map<String,Emp> emps=new HashMap();//1.

    public Emp selectById(String empNo){//根据员工编号empNo查询员工对象e
        //1.用迭代器取出每个对象
        //获取HashMap中的所有键值对对象(Entry对象)
        Iterator<Map.Entry<String,Emp>> ite=emps.entrySet().iterator();//使用集合的方法获取迭代器对象
        while(ite.hasNext()){//判断迭代器的下一位是否有元素
            Map.Entry<String,Emp> e=ite.next();//用迭代器的next方法获取下一位元素
            //2.比较对象的编号和方法参数(员工编号)，如果相同就返回此员工对象表示此对象就是要查找的
            System.out.println(empNo+"---"+e.getKey());
            if(empNo.equals(e.getKey())){//较对象的编号和方法参数(传入的员工编号)，看是否相同
                return e.getValue();//如果相同就返回此员工对象表示此对象就是要查找的
            }
        }//3.如果不相同就返回null表示未找到
        return null;//  10.172.201.245
    }
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);//2.创建Scanner对象
        System.out.println("请输入员工编号：");//3.提示用户输入编号
        String empId=sc.next();//3.用Scanner对象的next方法输入String类型的员工编号
        System.out.println("请输入员工姓名:");//4.提示用户输入姓名
        String name=sc.next();//4.用Scanner对象的next方法输入String类型的员工姓名
        Emp e=new Emp(name,empId);
        EmpDaoImpl edc=new EmpDaoImpl();
        boolean flag=edc.updateEmp(e);
        System.out.println("修改员工的执行结果为：" + flag);

        //调用查询方法
        System.out.println("请输入员工编号：");
        String empNo=sc.next();//调用sc对象的next()输入编号
        Emp em=edc.selectById(empNo);//根据输入的员工编号调edc对象的selectById()查询员工对象
        System.out.println(em.empNo+"::"+em.name);

        boolean delRs=edc.deleteEmpById(empNo);
        System.out.println("是否删除成功:" + delRs);

    }

    public boolean  updateEmp(Emp e){
        boolean flag=false;//1.用flag表示删除或失败
        Emp findEmp=selectById(e.empNo);//3.查询此编号是否在集合中
        System.out.println("要修改的员工："+findEmp);
        if(findEmp!=null){//4.如果此编号在集合中(集合中查询的员工编号不为null)再删除员工数据
            emps.put(e.empNo, e);
            flag=true;//6.给flag变量中存储一个true表示修改员工成功
        }
        return flag;//返回flag的值(如果没有执行if结构，就返回flag的初始值false表示修改失败)
        //(如果执行了if结构，则返回true表示修改成功)
    }


    public boolean  deleteEmpById(String empNo){
        Emp oldEmp=selectById(empNo);//查找集合中是否有empNo
        if(oldEmp!=null){//2.判断是否从集合中查询到了员工了
            emps.remove(empNo);//如果查询到的员工不为空，则删除此员工对象
            //从集合emps中根据key删除value
            return true;//返回true表示删除成功
        }
        return false;//如果不满足if条件(集合中没员工)就返回false表示不能删除
    }


    public EmpDaoImpl() {//给集合中存储两个员工
        Emp e1=new Emp("郭志威","big1_1001");
        Emp e2=new Emp("王艺", "big1_1002");
        emps.put(e1.empNo, e1);
        emps.put(e2.empNo, e2);
    }


}
